package com.transpot.controller.exception;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.transpot.entry.exception.Exception;
import com.transpot.entry.exception.ExceptionVO;
import com.transpot.service.exception.ExceptionService;
import com.transpot.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 订单异常类的controller层
 */
@RestController
@RequestMapping("/exception")
public class ExceptionController {
    @Autowired
    private ExceptionService exceptionService;

    /**
     * 保存异常方法
     * @param exception
     * @return
     */
    @PostMapping("/addException")
    public R addException(@RequestBody Exception exception) {
        //添加异常处理状态为0未处理
        exception.setStatus(0);
        exceptionService.save(exception);
        return R.success();
    }

    /**
     * 分页查询全部未处理的异常信息
     * @param current
     * @param size
     * @return
     */
    @GetMapping("/getAllException")
    public R getAllException(int current, int size) {
        //调用service完成该方法
        Page<ExceptionVO> exceptionVOPage = exceptionService.getAllException(current, size);
        return R.success(exceptionVOPage);
    }

    /**
     * 处理异常信息方法
     * @param exceptionVO
     * @return
     */
    @PostMapping("/dealException")
    public R dealException(@RequestBody ExceptionVO exceptionVO) {
        //获得异常信息的主键
        Integer exceptionId = exceptionVO.getId();
        //根据异常信息的主键查询该异常信息
        Exception exception = exceptionService.getById(exceptionId);
        //设置状态为已处理
        exception.setStatus(1);
        //设置上处理方法
        exception.setWay(exceptionVO.getWay());
        //执行修改方法
        exceptionService.updateById(exception);
        return R.success();
    }

    /**
     * 获取当前司机提交的所有异常信息
     * @param current
     * @param size
     * @param id
     * @return
     */
    @GetMapping("/getExceptionByDriverId")
    public R getExceptionByDriverId(int current, int size, Integer id) {
        //调用service完成该方法
        Page<ExceptionVO> exceptionVOPage = exceptionService.getExceptionByDriverId(current, size, id);
        return R.success(exceptionVOPage);
    }

    /**
     * 撤销提交的异常
     * @param exceptionVO
     * @return
     */
    @PostMapping("/delException")
    public R delException(@RequestBody ExceptionVO exceptionVO) {
        //直接调用原生mp来删除
        exceptionService.removeById(exceptionVO.getId());
        return R.success();
    }
}
